;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 介绍：	51单片机上电执行的第一条指令（复位中断）以及其它各中断入口（中断向量表）
; NOTE:		File format: UTF-8
; 备注：	1、复位和中断运行起始地址介绍详见STC官方文档《STC89C52系列单片机器件手册》
;			第6章 中断系统；
;			2、DATA、BIT、ORG等汇编伪指令的含义详见Keil安装目录下的文档
;			Keil_v5\C51\Hlp\a51.chm，文档里支持搜索；有些伪指令网上很难搜到解释
; 作者		将狼才鲸
; 日期		2023-06-10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	EXTERN CODE (RESET) ; 1、声明其它文件中的RESET函数，函数名会忽略大小写，
						; 2、EXTERN类似于C语言的extern，打破文件包含关系，可以调用任意文件中的函数；
						; 3、EXTERN后面可以跟各种伪指令，EXTERN CODE表示代码段空间的地址（或称之为函数）；
						; 4、和PUBLIC成对使用，函数原始位置要输出这个名称；
	EXTERN CODE (DEFAULT_IRQ)
	EXTERN CODE (EXT0_IRQ)

	;;
	; 1、ORG的作用和CSEG AT的作用一样，指定后面代码在内存中存放的位置，
	; CSEG等是Keil开发环境的伪指令（其它编译器如开源的SDCC可能有不一样的伪指令）;
	; 2、十六进制立即数以H结尾
	ORG		00H	; RAM的0地址是复位中断执行的入口，后面的一些地址是各中断的入口
	LJMP	RESET	; 长跳转指令可跳64KB内的地址（函数），类似的还有其它短跳的指令，
					; C语言中类似的关键字是goto

	ORG		03H	; 外部中断0；只有8条指令的总空间，尽快跳转到中断处理函数
	LJMP	DEFAULT_IRQ

	ORG		0BH	; 定时器0
	LJMP	DEFAULT_IRQ

	ORG		13H	; 外部中断1
	LJMP	DEFAULT_IRQ

	ORG		1BH	; 定时器1
	LJMP	DEFAULT_IRQ

	ORG		23H	; 外部中断2，串口
	LJMP	DEFAULT_IRQ

	ORG		2BH	; 外部中断3
	LJMP	DEFAULT_IRQ

	END
